package redes;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;

import model.Deme;

public class RedeScaleFree extends Rede {	
	
	public RedeScaleFree(int quantidadeDemes, int tamanhoPopulacaoLocal, Random raiz) {
		super(quantidadeDemes, tamanhoPopulacaoLocal, raiz);
		init();
	}
	
	private void init(){
		ArrayList<Integer> rotulosEscolhidos = new ArrayList<Integer>(); 
		
		Integer origem = getRandom().nextInt(demes.size());
		rotulosEscolhidos.add(origem);
		
		Integer proximo, conectado;
		for(int i = 0; i<demes.size() ; i++){
			proximo = i;
			conectado = getRandom().nextInt(rotulosEscolhidos.size());
			conectado = rotulosEscolhidos.get(conectado);
			
			if(!proximo.equals(conectado)){
				rotulosEscolhidos.add(proximo);
				rotulosEscolhidos.add(conectado);
				
				int rotuloX = proximo.intValue();
				int rotuloY = conectado.intValue();
				
				matrizDeVizinhanca[rotuloY][rotuloX] = true;
				matrizDeVizinhanca[rotuloX][rotuloY] = true;
				vizinhos[rotuloX].add(demes.get(rotuloY));
				vizinhos[rotuloY].add(demes.get(rotuloX));
			}
			
		}
	}

	@Override
	public Iterator<Deme> getIterator() {
		return demes.iterator();
	}

}
